package com.jianhua.backend.utils;

import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;

/**
 * SHA-256工具类(不可逆哈希)
 * 简化版 - 不包含盐值功能
 */
public class SHA256Util {

    /**
     * 生成SHA-256哈希值(十六进制字符串)
     * @param input 原始字符串
     * @return 64位十六进制哈希字符串
     * @throws IllegalArgumentException 如果输入为空
     */
    public static String hash(String input) {
        if (StrUtil.isBlank(input)) {
            throw new IllegalArgumentException("输入不能为空");
        }
        return SecureUtil.sha256(input);
    }

    /**
     * 验证输入是否与哈希值匹配
     * @param input 原始字符串
     * @param hash 要比较的哈希值
     * @return 如果匹配返回true，否则返回false
     * @throws IllegalArgumentException 如果输入或哈希值为空
     */
    public static boolean verify(String input, String hash) {
        if (StrUtil.isBlank(input) || StrUtil.isBlank(hash)) {
            throw new IllegalArgumentException("输入和哈希值不能为空");
        }
        return hash(input).equals(hash);
    }
}

/**
 * public class SHA256Example {
 *     public static void main(String[] args) {
 *         String originalText = "Hello, World!";
 *
 *         // 生成哈希
 *         String hash = SHA256Util.hash(originalText);
 *         System.out.println("原始文本: " + originalText);
 *         System.out.println("SHA-256哈希: " + hash);
 *
 *         // 验证哈希
 *         boolean isValid = SHA256Util.verify(originalText, hash);
 *         System.out.println("验证结果: " + isValid);
 *
 *         // 错误验证示例
 *         boolean isWrongValid = SHA256Util.verify("Wrong text", hash);
 *         System.out.println("错误文本验证结果: " + isWrongValid);
 *     }
 * }
 */